/* 
 * File:   VisibleStackSizeParameterCommand.h
 * Author: Gab'z
 *
 * Created on 5 juin 2012, 15:15
 */

#ifndef VISIBLESTACKSIZEPARAMETERCOMMAND_H
#define	VISIBLESTACKSIZEPARAMETERCOMMAND_H

#include "ParametersCommand.h"

namespace calculator {

    class VisibleStackSizeParameterCommand : public ParametersCommand {
        friend class CommandMap;

    public:
        std::string isExecutable() const;
        void execute() const throw (CommandException);
        virtual VisibleStackSizeParameterCommand* clone() const;

        const Memento* createMemento() const throw (CommandException);
        void restoreFromMemento(const Memento* memento) const throw (MementoException);

    protected:
        VisibleStackSizeParameterCommand(const std::string name);
        virtual ~VisibleStackSizeParameterCommand();

    private:
        VisibleStackSizeParameterCommand(const VisibleStackSizeParameterCommand& orig);
        void apply(Parameters* parameters) const;

    };

}

#endif	/* VISIBLESTACKSIZEPARAMETERCOMMAND_H */

